package com.sky.handler;
/**
 * 1.当前模块名：sky-server
 *   模块作用：项目核心服务模块，包含业务逻辑和异常处理
 * 2.当前包名：com.sky.handler
 *   包作用：存放全局处理器（如异常处理器）
 * 3.当前类名：GlobalExceptionHandler
 *   类作用：全局异常处理器，统一处理业务异常
 */
import com.sky.exception.BaseException;
import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 *
 * GlobalExceptionHandler：全局异常处理器
 * 知识点说明：
 * 1. 全局异常处理：@RestControllerAdvice注解标记全局异常处理类
 * 2. 异常捕获范围：处理BaseException及其子类（自定义业务异常）
 * 3. 统一响应格式：返回Result.error()保证异常响应结构一致
 * 4. 日志记录：记录异常信息到日志文件（级别为ERROR）
 * 5. 异常隔离：只捕获已知业务异常，避免暴露系统细节
 * 6. 异常分类：可扩展处理多种异常类型
 * 7. 日志优化：建议记录异常堆栈信息（调试用）
 * 8. 异常转换：将系统异常转换为业务异常
 * 9. 避免冗余：减少重复的try-catch代码块
 * 10. 安全设计：不返回敏感错误信息
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 捕获业务异常
     * @param ex
     * @return
     */
    @ExceptionHandler
    public Result exceptionHandler(BaseException ex){
        log.error("异常信息：{}", ex.getMessage());
        return Result.error(ex.getMessage());
    }

}
